package br.com.eduquiz.session;

import br.com.eduquiz.entity.*;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import java.util.Arrays;

@Name("questaoList")
public class QuestaoList extends EntityQuery<Questao> {
	
	private static final long serialVersionUID = 3648767363725010124L;

	private static final String EJBQL = "select questao from Questao questao";

	private static final String[] RESTRICTIONS = { "" +
			"lower(questao.questao) like lower(concat(#{questaoList.questao.questao},'%'))", 
			"questao.questionario.categoria.usuario.subGrupo.id = #{questaoList.subgrupo.id}",
			"questao.questionario.categoria.usuario.subGrupo.grupo.id = #{questaoList.grupo.id}",
			"questao.questionario.categoria.usuario.subGrupo.grupo.administradorGrupo.id = #{questaoList.administradorGrupo.id}",
	};

	private Questao questao = new Questao();
	
	@In(required=false)
	private SubGrupo subgrupo;
	
	@In(required=false)
	private Grupo grupo;
	
	@In(required=false)
	private AdministradorGrupo administradorGrupo;

	public QuestaoList() {
		setEjbql(EJBQL);
		setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
		setMaxResults(25);
	}

	public Questao getQuestao() {
		return questao;
	}

	public SubGrupo getSubgrupo() {
		return subgrupo;
	}

	public void setSubgrupo(SubGrupo subgrupo) {
		this.subgrupo = subgrupo;
	}

	public Grupo getGrupo() {
		return grupo;
	}

	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	public AdministradorGrupo getAdministradorGrupo() {
		return administradorGrupo;
	}

	public void setAdministradorGrupo(AdministradorGrupo administradorGrupo) {
		this.administradorGrupo = administradorGrupo;
	}
}
